Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ho letto il codice, e ho trovato alcune piccole imperfezioni:
- Quando fai delle divisioni, accertati di usere variabili non intere.
- La funzione che calcola la potrnza è pow( <base>, <esponente> ).
Non (px1-px2)^2, l' operatore ^ è l' or bit a bit.
Ecco il codice corretto:
Codice sorgente - presumibilmente C#
/*
Name: Geometria Analitica di base
Copyright: Fallen Angel
Author: Fallen Angel
Date: 22/01/10 21.23
Description: Calcolo delle funzioni della geometria analitica di base
I NaN ti venivano fuori perchè visualizzavi con la printf e lo switch %f dei valori interi.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
No ... se l'argomento è negativo, l'errore è un altro ... semmai, potrebbe essere che l'argomento della sqrt sia stato modificato (con quell'operatore a bit) in modo che il formato double sia sballato ...
Ma un compilatore decente dovrebbe fare un po' di bizze su quella scrittura ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
Ho letto il codice, e ho trovato alcune piccole imperfezioni:
- Quando fai delle divisioni, accertati di usere variabili non intere.
- La funzione che calcola la potrnza è pow( <base>, <esponente> ).
Non (px1-px2)^2, l' operatore ^ è l' or bit a bit.
Come già evidenziato da Poggi Marco i problemi sono esattamente quei due, però ci tenevo a precisare che l'operatore ^ (accento circonflesso) è utilizzato per operazioni sui bit esattamente per l' OR esclusivo ovvero lo XOR.
Quindi con l'operazione (espressione)^(esponente) che nel nostro caso è (px1-px2)^2 , effettuava uno XOR tra il numero risultante dalla differenza di px1 e px2 e il numero 2.
Per esempio se px1-px2 valeva 5 il risultato sarebbe stato:
(5 in bin) ( 2 in bin) (5 XOR 2)
1 0 1
0 1 1
1 0 1
cioè 5 XOR 2 sarebbe stato uguale a 7
quindi il risultato di (px1-px2)^2 non è l'esponenziale bensì un'operazione tra bit, e così il risultato era falsato(ovviamente il compilatore non è colpevole di tutto ciò dato che la sintassi risulta corretta).
La funzione esponenziale offerta dal C è pow(base,esponente).
Per la distanza tra i punti non c'è bisogno di verificare se il numero passato alla funzione sqrt() sia positivo, visto che nell'espressione compaiono due funzioni con esponente pari e quindi il risultato è sicuramente sempre positivo.
Ultima modifica effettuata da Zonzo il 24/01/2010 alle 12:21
Era da un po' che non usavo più il C e qunado ho copiato la formula dal libro non mi è venuto più in mente che in C l'accento circonflesso è un operatore. Lol che nabbo...